Virtual assistant aided communication with 3rd party service in a communication session

ABSTRACT

Disclosed are systems, methods, and non-transitory computer-readable storage media for utilizing a virtual assistant to assist a user with a communication session between the user and a third party service. A user can use a communication application to enter a message directed to the virtual assistant and request assistance to communicate with a 3rd party service. In response, the virtual assistant can access a set of communication instructions associated with the 3rd party service. The set of communication instructions can include a set of commands for communicating with the 3rd party service, services provided by the 3rd party service and data needed by the 3rd party service to facilitate communication. The virtual assistant can use the communication instructions to gather data needed by the 3rd party service, communicate with the 3rd party service and present the user with data received from the 3rd party service.

TECHNICAL FIELD

The present technology pertains to communication sessions between a userand a third party service, and more specifically pertains to utilizing avirtual assistant to assist the user with a communication sessionbetween the user and the third party service.

BACKGROUND

Current computing devices can include functionality that enables usersto communicate with each other by transmitting and receiving messages.For example, many computing devices include text and/or instantmessaging functionality that enable users of the computing devices totransmit text, images, sounds, etc., to the client devices of one ormore other users. Users can use this functionality to haveconversations, make plans and/or perform any other number of tasks.

In addition to communicating with friends, family, etc., users can alsoutilize communication sessions to communicate with 3^(rd) partyservices, such as airlines, banks, customer service departments, etc.For example, some 3^(rd) party services provide users with anapplication and/or website that includes functionality to communicatewith a representative of the 3 rp party service. While this allows usersto communicate with a representative, it also requires the user toaccess the 3^(rd) part website and/or download the 3^(rd) partyservice's application. Further, many 3^(rd) party services require auser to navigate a series of selections and/or provide a set ofinformation prior to connecting the user to a representative.Accordingly, improvements are needed.

SUMMARY

Additional features and advantages of the disclosure will be set forthin the description which follows, and in part will be obvious from thedescription, or can be learned by practice of the herein disclosedprinciples. The features and advantages of the disclosure can berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures of the disclosure will become more fully apparent from thefollowing description and appended claims, or can be learned by thepractice of the principles set forth herein.

Disclosed are systems, methods, and non-transitory computer-readablestorage media for utilizing a virtual assistant to assist a user with acommunication session between the user and a third party service. Acommunication session can be a conversation between one or moreparticipants using a communication application such as a text and/orinstant messaging application. For example, a communication applicationcan be an application such as iMessage® available by Apple Inc., ofCupertino, Calif.

A virtual assistant can be an application, module, software, etc.,capable of analyzing messages included in the communication session toidentify tasks and provide assistance with completing the identifiedtasks. For example, a virtual assistant can be an application such asSiri® available by Apple Inc., of Cupertino, Calif., that uses semanticanalysis to analyze text, recognize terms and interpret the intendedmeaning.

A task can be any type of action that a virtual assistant can provideassistance with. For example, a task can include facilitatingcommunication between the user and a 3^(rd) party service, performingspecified actions with the 3^(rd) party service, gathering and providinginformation to the 3^(rd) party service, receiving information from the3^(rd) party service, etc. A 3^(rd) party service can be any type ofservice, business, etc. For example, a 3^(rd) party service can be anairline, bank, insurance company, store, etc.

In some embodiments, a user can communicate with the virtual assistantas part of the communication session. For example, a user can use thecommunication application to enter a message directed to the virtualassistant. The virtual assistant can analyze the entered message anddetermine that the message was directed to the virtual assistant and, inresponse, assist the user. For example, the virtual assistant canidentify a task from the message and assist the user with completing thetask.

In some embodiments, the virtual assistant can assist the user tocommunicate with a 3^(rd) party service. For example, a user can use thecommunication application to enter a message directed to the virtualassistant that requests that the virtual assistant connect the user witha 3^(rd) party service. In response, the virtual assistant can access aset of communication instructions associated with the 3^(rd) partyservice. The set of communication instructions can include a set ofcommands for communicating with the 3^(rd) party service, servicesprovided by the 3^(rd) party service as well as data needed by the3^(rd) party service to facilitate communication with the 3^(rd) partyservice. The virtual assistant can use the communication instructions togather data needed by the 3^(rd) party service, communicate with the3^(rd) party service and present the user with data received from the3^(rd) party service.

Communication with the 3^(rd) party service can be presented to the useras part of the communication session. For example, the virtual assistantcan present messages prompting the user to provide data and makeselections, as well as present the user with any data received from the3^(rd) party service. Further, the virtual assistant can connect theuser to a representative of the 3^(rd) party service as part of thecommunication session. The user can then user the communication sessionto communicate with the representative.

BRIEF DESCRIPTION OF THE DRAWINGS

The above-recited and other advantages and features of the disclosurewill become apparent by reference to specific embodiments thereof whichare illustrated in the appended drawings. Understanding that thesedrawings depict only exemplary embodiments of the disclosure and are nottherefore to be considered to be limiting of its scope, the principlesherein are described and explained with additional specificity anddetail through the use of the accompanying drawings in which:

FIG. 1 shows an exemplary configuration of devices and a network inaccordance with the invention;

FIG. 2 shows an embodiment of a client device configured to enable auser to utilize a virtual assistant to perform tasks during acommunication session;

FIG. 3 shows a method of a client device utilizing a virtual assistantto assist a user communicate with a 3^(rd) party service;

FIGS. 4A-4J show an example of a virtual assistant assisting aparticipant of a communication session to communicate with a 3^(rd)party service;

FIGS. 5A-5J shown another example of a virtual assistant assisting aparticipant of a communication session to communicate with a 3^(rd)party service;

FIGS. 6A and 6B illustrate exemplary possible system embodiments.

DESCRIPTION

Various embodiments of the disclosure are discussed in detail below.While specific implementations are discussed, it should be understoodthat this is done for illustration purposes only. A person skilled inthe relevant art will recognize that other components and configurationsmay be used without parting from the spirit and scope of the disclosure.

The disclosed technology addresses the need in the art for utilizing avirtual assistant to assist a user with a communication session betweenthe user and a third party service. A communication session can be aconversation between one or more participants using a communicationapplication such as a text and/or instant messaging application. Forexample, a communication application can be an application such asiMessage® available by Apple Inc., of Cupertino, Calif.

A virtual assistant can be an application, module, software, etc.,capable of analyzing messages included in the communication session toidentify tasks and provide assistance with completing the identifiedtasks. For example, a virtual assistant can be an application such asSiri® available by Apple Inc., of Cupertino, Calif., that uses semanticanalysis to analyze text, recognize terms and interpret the intendedmeaning.

A task can be any type of action that a virtual assistant can provideassistance with. For example, a task can include facilitatingcommunication between the user and a 3^(rd) party service, performingspecified actions with the 3^(rd) party service, gathering and providinginformation to the 3^(rd) party service, receiving information from the3^(rd) party service, etc. A 3^(rd) party service can be any type ofservice, business, etc. For example, a 3^(rd) party service can be anairline, bank, insurance company, store, etc.

In some embodiments, a user can communicate with the virtual assistantas part of the communication session. For example, a user can use thecommunication application to enter a message directed to the virtualassistant. The virtual assistant can analyze the entered message anddetermine that the message was directed to the virtual assistant and, inresponse, assist the user. For example, the virtual assistant canidentify a task from the message and assist the user with completing thetask.

In some embodiments, the virtual assistant can assist the user tocommunicate with a 3^(rd) party service. For example, a user can use thecommunication application to enter a message directed to the virtualassistant that requests that the virtual assistant connect the user witha 3^(rd) party service. In response, the virtual assistant can access aset of communication instructions associated with the 3^(rd) partyservice. The set of communication instructions can include a set ofcommands for communicating with the 3^(rd) party service, servicesprovided by the 3^(rd) party service as well as data needed by the3^(rd) party service to facilitate communication with the 3^(rd) partyservice. The virtual assistant can use the communication instructions togather data needed by the 3^(rd) party service, communicate with the3^(rd) party service and present the user with data received from the3^(rd) party service.

Communication with the 3^(rd) party service can be presented to the useras part of the communication session. For example, the virtual assistantcan present messages prompting the user to provide data and makeselections, as well as present the user with any data received from the3^(rd) party service. Further, the virtual assistant can connect theuser to a representative of the 3^(rd) party service as part of thecommunication session. The user can then user the communication sessionto communicate with the representative.

FIG. 1 illustrates an exemplary system configuration 100, whereinelectronic devices communicate via a network for purposes of exchangingcontent and other data. As illustrated, multiple computing devices canbe connected to communication network 110 and be configured tocommunicate with each other through use of communication network 110.Communication network 110 can be any type of network, including a localarea network (“LAN”), such as an intranet, a wide area network (“WAN”),such as the internet, or any combination thereof. Further, communicationnetwork 110 can be a public network, a private network, or a combinationthereof. Communication network 110 can also be implemented using anynumber of communication links associated with one or more serviceproviders, including one or more wired communication links, one or morewireless communication links, or any combination thereof. Additionally,communication network 110 can be configured to support the transmissionof data formatted using any number of protocols.

Multiple computing devices can be connected to communication network110. A computing device can be any type of general computing devicecapable of network communication with other computing devices. Forexample, a computing device can be a personal computing device such as adesktop or workstation, a business server, or a portable computingdevice, such as a laptop, smart phone, or a tablet PC. A computingdevice can include some or all of the features, components, andperipherals of computing device 500 of FIGS. 5A and 5B.

To facilitate communication with other computing devices, a computingdevice can also include a communication interface configured to receivea communication, such as a request, data, etc., from another computingdevice in network communication with the computing device and pass thecommunication along to an appropriate module running on the computingdevice. The communication interface can also be configured to send acommunication to another computing device in network communication withthe computing device.

In system 100, a user can communication with other users through use ofclient devices 115 ₁, 115 ₂, . . . , 115 _(n), (collectively “115”)connected to communication network 110. Client devices 115 can be anytype of computing device, such as a smart phone, tablet, personalcomputer, etc. Client devices 115 can include a communicationapplication that enables a user of a client device 115 _(i) to transmitand receive messages to and from other client devices 115. For example,a communication application can be a text and/or instant messagingapplication such as iMessage® available by Apple Inc., of Cupertino,Calif.

A user can also use client devices 115 to interact with 3^(rd) partyservers 120 ₁, 120 ₂, , . . . , 120 _(n), (collectively “120”) connectedto communication network 110. 3^(rd) party servers 120 can be one ormore of any type of computing devices and be configured to maintain andprovide data to requesting client devices 115. For example, a 3^(rd)party server 120 _(i) can be affiliated with and managed by a 3^(rd)party service to store and provide data for the 3rd party service. Forexample, a 3^(rd) party server 120 _(i) can store and provide web datathat can be rendered by client devices 115 to present a webpage,website, etc., to a requesting user.

3^(rd), party servers 120 can also provide one or more services that canbe accessed by client devices 115 using specified commands, such ascommands defined by an application program interface (API). A servicecan be any type of action or transaction, such as providing specifieddata, performing a financial transaction, completing a purchase, etc.

3^(rd) party servers 120 can support connections from a variety ofdifferent types of client devices 115, such as desktop computers; mobilecomputers; mobile communications devices (e.g. mobile phones, smartphones, tablets, etc.); smart televisions; set-top boxes; and/or anyother network enabled computing devices.

System 100 can also include content management system 105. Contentmanagement system 105 can include one or more computing devicesconfigured to manage content items for multiple user accounts. A contentitem can include any type of digital asset such as an application, audiofile, text file, video file, etc.

Content management system 105 can support connections from a variety ofdifferent types of client devices 115, such as desktop computers; mobilecomputers; mobile communications devices (e.g. mobile phones, smartphones, tablets, etc.); smart televisions; set-top boxes; and/or anyother network enabled computing devices. Client devices 115 can be ofvarying type, capabilities, operating systems, etc. Furthermore, contentmanagement system 105 can concurrently accept connections from andinteract with multiple client devices 115.

A user can interact with content management system 105 via a client-sideapplication installed on client device 115 _(i). In some embodiments,the client-side application can include a content management systemspecific component. For example, the component can be a stand-aloneapplication, one or more application plug-ins, and/or a browserextension. However, the user can also interact with content managementsystem 105 via a third-party application, such as a web browser, thatresides on client device 115 _(i) and is configured to communicate withcontent management system 105. In either case, the client-sideapplication can present a user interface (UI) for the user to interactwith content management system 105. For example, the user can interactwith content management system 105 via a client-side applicationintegrated with the file system or via a webpage displayed using a webbrowser application.

Content management system 105 can be configured to manage content itemsand data for multiple user accounts. For example, content managementsystem 105 can allow users to purchase, store and access content items,calendar data, contact data, etc. Furthermore, content management system105 can make it possible for a user to access the stored data, such ascontent items, calendar data, contact data, etc., from multiple clientdevices 115. Accessing a content item can include receiving metadatadescribing the content item, streaming the content item from contentmanagement system 105 and/or downloading the content item to one ofclient devices 115.

To facilitate the various content management services, a user can createa user account with content management system 105. The accountinformation for each created user account can be maintained in useraccount database 150. User account database 150 can store profileinformation for each user account, including a unique account identifieridentifying the user account, personal information, username, password,email address, home address, credit card information, bankinginformation, calendar data, contact data, etc. User account database 150can also include account management information, such as content storagelocations, security settings, personal configuration settings, clientdevices authorized to access the user account, etc.

A user account can be used to purchase, manage and store content items,such as digital data, documents, text files, audio files, video files,etc. For example, content management system 105 can provide an onlinecontent retailer where users can purchase a variety of content items.Further, in some embodiments, a user can upload content items from oneof client devices 115 to content management system 105. The purchasedand uploaded content items can be assigned to the user's account andthen accessed by the user from any of client devices 115. For example, acontent item identifier identifying each content item assigned to a useraccount can be stored in user account database 150 and associated withthe corresponding user account. The content item identifier can be usedto identify the content item as well as the location of the contentitem.

The content items can be stored in content storage 160. Content storage160 can be a storage device, multiple storage devices, or a server.Alternatively, content storage 160 can be a cloud storage provider ornetwork storage accessible via one or more communications networks.Content management system 105 can hide the complexity and detailsregarding storage of the content items from client devices 115 such thatthe location of the content items stored by content management system105 is not known by client devices 115. Content management system 105can store the content items in a network accessible storage (SAN)device, in a redundant array of inexpensive disks (RAID), etc. Contentstorage 160 can store content items using one or more partition types,such as FAT, FAT32, NTFS, EXT2, EXT3, EXT4, ReiserFS, BTRFS, and soforth.

Content storage 160 can also store metadata describing content items,content item types, and the relationship of content items to varioususer accounts. The metadata for a content item can be stored as part ofthe content item or can be stored separately. In one variation, eachcontent item stored in content storage 160 can be assigned a system-wideunique identifier.

Content management system 105 can include content management module 125configured to manage and access each user account and the content itemsassigned to the user accounts. For example, content management module125 can be configured to communicate with user account database 150 andcontent storage 160 to adjust privileges with respect to content itemsand otherwise manage content items.

Upon a user logging into their user account from one of client devices115, content management module 125 can access the account informationassociated with the user account to identify the content items assignedto the user account, as well as account configuration data dictatingpresentation of the content items. Content management module 125 canthen present and/or provide the content items to the user according tothe account configuration data. For example, content management module125 can access a user account to identify the content item identifiersassigned to the user account. The content item identifier can then beused to identify and locate the content items assigned to the useraccount, which can be presented according to the account configurationdata.

Presenting the content items can include transmitting metadatadescribing the content items to client device 115 _(i) that was used toaccess the user account. Client device 115 _(i) can then use thereceived metadata to present the content items that the user account canaccess. For example, client device 115 _(i) can present informationidentifying the content items available to the user account in a contentitem library. This can include presenting the title of the contentitems, images such as an album or book cover, description of the contentitem, etc.

Content management system 105 can also maintain a set of communicationinstructions for one or more 3^(rd) party services. For example, contentmanagement system 105 can include instruction storage 170 that isconfigured to maintain multiple sets of communication instructions.

A set of communication instructions can include data that can be used tocommunicate with a 3^(rd) party service. For example, a set ofcommunication instructions for a 3^(rd) party service can include alisting of services provided by the 3^(rd) party service. As an example,services provided by a 3^(rd) party service such as a bank can includeproviding an account balance, transferring money amongst accounts,depositing a check, speaking to a representative, etc. As anotherexample, services provided by a 3^(rd) party service such as an airlinecan include purchasing an airline ticket, checking a flight arrivaltime, changing a schedule flight, canceling a flight, speaking to arepresentative, etc.

A set of communication instruction can also include a listing of dataneeded by the 3^(rd) party service to facilitate communication. Forexample, a 3^(rd) party service may require a user name, account number,etc. The listing of data can also include data needed by the 3^(rd)party based on service provided by the 3^(rd) party service. Forexample, to provide a service such as changing a flight, a 3^(rd) partyservice such as an airline may require an existing flight number,customer name, etc. As another example, to provide a service such asbooking a flight, the airline may require data such as a departing city,destination city, desired departure and return date, etc.

A set of communication instructions can also include one or morecommands for communicating with the 3^(rd) party service. The commandscan be defined by an application program interface (API) and be used toperform the various services provided by the 3^(rd) party service. Thecommands can be labeled or identified based on the correspondingservice.

Each set of communication instructions stored in instruction storage 170can be tagged, labeled and/or otherwise identified based on the 3^(rd)party service associated with the set of communication instructions. Forexample, a set of communications instructions can be tagged with aunique 3^(rd) party identifier for the corresponding 3^(rd) partyservice.

Content management system 105 can provide one or more sets ofcommunication instructions to any requesting client device 115. Forexample, content management system 105 can receive an instructionrequest from a client device 115 _(i) and, in response, provide theclient device 115 _(i) with the set of communication instructions. Aninstruction request can include an identifier identifying a 3^(rd) partyservice. Content management system 105 can use the received identifierto identify the corresponding set of communication instructions frominstruction storage 170.

FIG. 2 shows an embodiment of a client device 115 _(i) configured toenable a user to utilize a virtual assistant to communicate with a3^(rd) party service during a communication session. FIG. 2 is describedin view of the system shown in FIG. 1. As shown, client device 105,includes communication application 205. Communication application 205can be any type of application configured to enable a user to send andreceive data messages with one or more other client devices 115. A datamessage can be any type of data that can be transmitted from onecomputing device to another, such as text data, image data, sound data,etc. In some embodiments, communication application 205 can be a textand/or instant messaging application such as iMessage® available byApple Inc., of Cupertino, Calif

A user of client device 115 _(i) can use communication application 205to conduct communication sessions with one or more groups of usersand/or entities. A communication session can be a group of messagestransmitted between a group of users and/or entities. For example, acommunication session can be an instant messaging conversation between agroup of two or more users. Alternatively, a communication session canbe an instant messaging conversation between one or more users and athird party service, such as with a representative of the 3^(rd) partyservice and/or an automated computer system maintained by the 3^(rd)party service. As another example, a communication session can be aninstant messaging conversation between one or more users and a virtualassistant.

Communication application 205 can provide a user with a messaginginterface that enables the user to conduct a communication session. Forexample, the messaging interface can enable a user to create a newcommunication session by selecting one or more participant users andentering a message to be transmitted to the participant users. Further,the messaging interface can enable a user to view existing communicationsession and enter and transmit new messages as part of the existingcommunication sessions.

Client device 115 _(i) can also include virtual assistant 210 configuredto assist the user with tasks during a communication session. Virtualassistant 210 can be an application, module, software, etc., capable ofanalyzing messages included in a communication session to identify tasksand provide the user with assistance completing the identified tasks.For example, virtual assistant 210 can be an application such as Siri®available by Apple Inc., of Cupertino, Calif., that uses semanticanalysis to analyze text, recognize terms and interpret the intendedmeaning.

A task can be any type of function, actions, etc., with which virtualassistant 210 can assist a user. For example, a task can be retrievinginformation, such as retrieving the current time, retrieving directionsto a specified destination, retrieving sports scores, retrieving weatherinformation, retrieving movie times, etc. Further a task can becoordinating and executing a transaction and/or communication with a3^(rd) party service, such as scheduling a meeting, performing afinancial transaction, purchasing tickets, initiating communication witha representative, etc.

Client device 105, can enable a user to select to utilize virtualassistant 210 in relation to one or more communication sessions. In someembodiments, communication application 205 can be configured to enable auser to select to utilize virtual assistant 210 by adding virtualassistant 210 as a participant of the communication session. Forexample, the user can add a nickname associated with virtual assistant210 as a participant to a communication session. In response,communication application 205 can communicate with virtual assistant 210to utilize virtual assistant 210 to assist with the communicationsession.

Further, in some embodiments, communication application 205 can transmita notification message to the other participants of the communicationsession indicating that the user of client device 115 _(i) has selectedto utilize virtual assistant 205. For example, communication application205 can transmit a message as part of the communication sessionindicating that the user of client device 115 _(i) is utilizing virtualassistant 205. As another example, the nickname associated with virtualassistant 210 can be presented as a member of the communication session,thereby indicating that at least one participant of the communicationsession is utilizing the virtual assistant. In some embodiments, theother participants can be prompted regarding whether they would like toutilize the virtual assistant in regards to the communication session.

To assist a user with a communication session, virtual assistant 210 cananalyze messages included in the communication session to identifytasks. For example, virtual assistant 210 can use semantic analysis torecognize terms, sets of terms, etc., and interpret the intended meaningof the terms to identify one or more tasks that the user may needassistance with.

Virtual assistant 210 can use any type or techniques of semanticanalysis known in the art to identify tasks with which virtual assistant210 can assist the user. For example, in some embodiments, the semanticanalysis can include the use of natural language processing (e.g.,speech tagging, noun-phrase chunking, dependency and constituentparsing, etc.) to translate text into parsed text. Virtual assistant 210can then analyze the parsed text to identify tasks. For example, virtualassistant 210 can use question and intent analysis, to detect usercommands and/or actions from the text (e.g., schedule a meeting, set myalarm, purchase tickets, connect me with a representative, etc.).Virtual assistant 210 can then analyze the resulting commands and/oractions to determine whether they are commands and/or actions with whichvirtual assistant can assist the user. For example, virtual assistant210 can compare the tasks and/or actions to a list of known commandsand/or actions with which virtual assistant 210 can assist the user. Anycommands and/or actions identified by virtual assistant as being acommand and/or action with which virtual assistant 210 can assist theuser can be identified as a task by virtual assistant 210.

Further, virtual assistant 210 can identify a 3^(rd) party service withwhich the user would like to communicate and/or perform a task. Forexample, a message may identify a specific 3^(rd) party service, such asa specified airline, bank, etc., and virtual assistant 210 can identifythe 3^(rd) party service from the message. Alternatively, a message mayidentify a type of service and virtual assistant can determine theappropriate 3^(rd) party service. For example, messages such as “book aflight,” “check my account balance” and “make a reservation” can infer atype of service such as airline, bank and restaurant respectively.

Virtual assistant 210 can select a 3^(rd) party service based on thetype of service determined from the message. For example, virtualassistant 210 can select a 3^(rd) party service of the specified typebased on user history and/or user preferences. Alternatively, virtualassistant 210 can query the user regarding which 3^(rd) party servicethe user would like to use. For example, virtual assistant 210 canidentify candidate 3^(rd) party services and prompt the user as part ofthe communication to select from one of the candidate 3^(rd) partyservices.

Virtual assistant 210 can analyze messages transmitted amongst theparticipant users of the communication session to identify tasks. Thiscan include messages entered by a user of client device 115 _(i) to betransmitted to the other participants as part of the communicationsession, as well as messages received from other users as part of thecommunication session.

Further, virtual assistant 210 can determine whether a message providedby the user of client device 115 _(i) was intended for the otherparticipants of the communication session or intended for the virtualassistant. A user can use communication application 205 to enter amessage intended for virtual assistant 210, such as a request or commandthat the virtual assistant assist the user with a specified task. Forexample, a user can enter requests such as “help us schedule a meeting,”“help me book a flight” “connect me to a representative,” etc., andvirtual assistant can determine that the message was intended forvirtual assistant 210. In some embodiments, a user can address messagesintended for the virtual assistant by using a nickname for the personalassistant. For example, the user can enter a messages such as“Assistant, connect me to a representative.” Virtual assistant 210 candetermine that the message was intended for the virtual assistant basedon the use of the nickname addressing the virtual assistant 210.

In some embodiments, messages determined by virtual assistant 210 to beintended for virtual assistant 210 will not be transmitted to the otherparticipant users of the communication session. Likewise, responsesprovided by virtual assistant 210 can be presented as part of thecommunication session on client device 115 _(i), while not beingpresented to the other participant users of the communication session.In this way, a user of client device 115 _(i) can have a separateconversation with virtual assistant 210 to perform a specified task.

To assist a user with a task, virtual assistant 210 can communicate withone or more computing devices to gather data and perform requestedoperations. For example, virtual assistant 210 can gather datamaintained by client device 115 _(i) in memory and/or from otherapplications on client device 115 _(i), such as calendar data, contactdata, financial information, flight information, bank account numbers,etc. Further, virtual assistant 210 can gather data from one or morecomponents of client device 115 _(i), such as geographic coordinate datafrom Global positioning system (GPS) component, temperature data, sounddata, etc. Virtual assistant 210 can further edit, modify or deletedata, such as creating new calendar entries, modifying contactinformation, etc.

Virtual assistant 210 can also gather data from one or more computingdevices in network communication with client device 115 _(i). Forexample, virtual assistant 210 can communicate with one or more of3^(rd) party servers 120 to request and receive data. For example,virtual assistant 210 can communicate with 3^(rd) party servers 120 togather sports scores, movie show times, driving directions, etc.Further, virtual assistant 210 can perform requested operations, such aspurchase movie tickets, login to a user account, provide paymentinformation, etc.

Further, virtual assistant 210 can also gather data from client devices115. For example, to assist a user in determining the estimated time ofarrival of a participant of the communication session, virtual assistant210 can communicate with a client device 115 _(j) of the participantuser to gather geographic location data of the user, which can then beused to calculate the estimated time of arrival. In some embodiments,virtual assistant 210 can be required to receive approval from theparticipant of the communication session prior to receiving data fromthe participants client device 115 _(j). For example, virtual assistant210 can transmit a message as part of the communication session to theclient device 115 _(j) requesting the specified data and the receivingparticipant can select to either approve or deny the request.

In some embodiments, virtual assistant 210 can gather data from contentmanagement system 105. For example, virtual assistant 210 can gatherdata from user accounts maintained by content managements system 210.This can include demographic data for one or more participants of thecommunication session, contact information, content items assigned toeach user, such as applications utilized by each user, etc. In someembodiments, virtual assistant 210 can be required to receive approvalfrom the participant of the communication session prior to being able toaccess data from the participant's user account. For example, virtualassistant 210 can transmit a message as part of the communicationsession to the client device 115 _(j) requesting approval to access theparticipant's user account and the receiving participant can select toeither approve or deny the request. As another example, virtualassistant 210 can present a user with a message as part of thecommunication session requesting that the user provide the usercredentials associated with the user account (e.g., user name andpassword).

Alternatively, a participant can authorize virtual assistant 210 toaccess their user account by selecting to utilize the virtual assistantwith respect to the communication session. Thus, virtual assistant 210can be automatically authorized to access the user account of eachparticipant of the communication session that has selected to utilizethe virtual assistant 210. Virtual assistant 210 can transmit messagesrequesting approval to access the user account of any participant thathas not selected to utilize the personal assistant 210.

In some embodiments, virtual assistant 210 can gather data directly fromthe participants of a communication session. For example, virtualassistant 210 can present a poll as part of the communication session togather feedback from the users. This can include presenting the userswith multiple options, such as potential restaurants, meeting times,available services, etc. The poll can enable each participant to entertheir selection and virtual assistant 210 can select a time, restaurant,service, etc., based on the provided selections.

In some embodiments, the options presented to the users as part of apoll can be based on data gathered by virtual assistant 210 from theusers. For example, to help with the task of selecting a restaurant, thevirtual assistant can gather location information from each participantand select restaurants that are nearby or equidistance from theparticipants. The selected restaurants can then be presented to theusers in a poll.

As another example, to assist users schedule a meeting, virtualassistant 210 can gather calendar information from each user to identifya set of candidate times that works best for the participants. Virtualassistant 210 can then present the candidate times to the users as partof the communication session and allow the users to provide feedback.

As another example, to assist a user to perform a financial transactionwith one or more other users, virtual assistant 210 can gather dataindicating payment methods available to each user and select a set ofcandidate payment methods that are available to each user. For example,a payment method can be an application that enables a user to transfermoney from one party to another. Virtual assistant 210 can determinewhich payment methods are installed on each user's client device 115 andthen present a set of candidate payments methods from which the user canselect.

In some embodiments, virtual assistant 210 can gather communicationinstructions for a specified 3^(rd) party service and use thecommunication instructions to facilitate communication with therespective 3^(rd) party service. For example, upon determining that auser has requested that virtual assistant 210 assist the user tocommunicate with a 3^(rd) party service, virtual assistant 210 cantransmit an instruction request to content management system 120 thatrequest the set of communication instructions for the 3^(rd) partyservice. The instruction request can identify the specified 3^(rd) partyservice, for example, by including the name of the 3^(rd) party service,an identifier identifying the 3^(rd) party service, etc.

In some embodiments, client device 115 _(i) can maintain the set ofcommunication instructions locally, for example, in data storage 250.Virtual assistant 210 can gather the appropriate set of communicationinstruction from data storage 250.

Virtual assistant 210 can use the communication instructions to identifyservices that are offered by the 3^(rd) party service and with whichvirtual assistant 210 can assist the user. For example, virtualassistant 210 can present the user with a poll within a communicationsession that lists the services and prompts the user to select a servicewith which the user would like help.

Virtual assistant 210 can use the set of communication instructions toidentify data required by the 3^(rd) party service to facilitatecommunication between the user and the 3^(rd) party service to perform aspecified service. For example, a 3^(rd) party service may require auser's name, flight number and departure date to perform a service suchas change a user's flight. As another example, a 3 rp party service mayrequire a user's account number and password to perform a service suchas providing the user with an account balance. Virtual assistant 210 cangather the required data and provide it to the 3^(rd) party service.

Virtual assistant 210 can utilize the commands included in the set ofcommunication instructions to communicate with a 3^(rd) party service1201 to transmit data, receive data, present interface elements, etc.This can enable the user to communicate and interact with the 3^(rd)party service completely through use of communication application 205.For example, to perform a service such as booking a flight, virtualassistant 210 can enable a user to select a departure and destinationcity, provide dates, select flights, present flights to the user, etc.

Virtual assistant 210 can also connect a user to a representative of a3^(rd) party service so that a user can communicate directly with therepresentative as part of the communication session. In someembodiments, virtual assistant 210 can determine an expected wait timeto be connected to a representative and notify the user of the expectedwait. A communication session with a representative can remain active(e.g., messages entered will be received by the other party) untilterminated by either the user or the representative or, alternatively,after a specified period of time with no activity. The communicationsession record will remain available to the user and the user mayrequest that virtual assistant again reconnect the user to therepresentative. This further allows each party to have a record of allprevious communication between the parties available within thecommunication session.

FIG. 3 shows a method of a client device 115 _(i) utilizing a virtualassistant 120 to assist a user communicate with a 3^(rd) party service.The method shown in FIG. 3 is described in view of the systems shown inFIG. 1 and FIG. 2. Although specific steps are shown in FIG. 3, in otherembodiments the method may have more or less steps. Further, the orderin which the steps are performed is just one possible embodiment and isnot meant to be limiting. The method may be performed in a variety ofdiffering orders, including one or more steps being performedsimultaneously, and/or including more or less steps than those shown inFIG. 3.

At block 305, a client device 115 _(i) can receive a message as part ofa communication session. For example, a user of the client device 115_(i) may have entered the message using communication application 205.

At block 310, the virtual assistant 210 can determine that the messagerequests that the virtual assistant 210 assist the user to communicatewith a 3^(rd) party service. For example, virtual assistant 210 can usesemantic analysis to analyze the text of the message, recognize termsand interpret the intended meaning. The message may identify a specified3^(rd) party service and the virtual assistant 210 can determine thatthe user would like to communicate with the specified 3^(rd) partyservice. Alternatively, the message may identify a 3^(rd) party servicetype and the virtual assistant 210 can either select a 3^(rd) partyservice of the specified type or query the user regarding which 3^(rd)party service the user would like to communicate with.

In some embodiments, the user may use a name that is common to two ormore 3^(rd) party services. In this type of situation, the virtualassistant 210 can prompt the user to clarify the desired 3^(rd) partyservice. For example, the virtual assistant can present the user with apoll including the 3^(rd) party services associated with the name andask the user to select the desired 3^(rd) party service.

At block 315, the virtual assistant 210 can retrieve communicationinstruction for the 3^(rd) party service. For example, the virtualassistant 210 can transmit an instruction request to a contentmanagement system 105 that maintains communication instructions for oneor more 3^(rd) party services. Alternatively, the virtual assistant 210can retrieve the communication instructions from a data storage 250 ofthe client device 115 _(i).

At block 320, the virtual assistant 210 can prompt the user to selectfrom one or more available services offered by the 3^(rd) party service.For example, a 3^(rd) party service such as a bank may offer multipleservices such as transferring funds, retrieving an account balance, etc.As another example, a 3^(rd) party service such an airline may offerservices such as booking a flight, changing a flight, checking anarrival time, etc.

The virtual assistant 210 can determine the available services from theset of communication instructions for the 3^(rd) party service. Forexample, the set of communication instructions may include a listing ofservices provided by the 3^(rd) party service and the virtual assistantmay prompt the user to select from one or more of the availableservices. The virtual assistant 210 can prompt the user by presentingthe user with a message as part of the communication session thatprompts the user to enter the service. Alternatively, the virtualassistant 210 can present the user with one or more services to choosefrom, for example, in the form of a poll presented in the communicationsession, and the user can select from one of the presented options.

In some embodiments, the message provided by the user in block 305 mayidentify a specified service that the user would like help with. Forexample, a user may enter a message such as “please help me book aflight,” in which case the virtual assistant does not need to prompt theuser regarding which service the user would like help with.

At block 330, the virtual assistant 210 can gather data required tofacilitate the selected service. A 3^(rd) party service may requirespecified data to provide or facilitate a selected service. For example,to provide a service such as accessing a bank account, a 3^(rd) partyservice may require a user's account number and user accountcredentials. As another example, to provide a service such as booking aflight, a 3^(rd) party service may require the user's name, address,desired destination and travel dates.

The virtual assistant 210 can determine the data required from the setof communication instructions for the 3^(rd) party service. The set ofcommunication instructions can identify data required by the 3^(rd)party service based on a selected service and the virtual assistant 210can identify the specified data based on the service selected by theuser.

The virtual assistant 210 can automatically gather the required data.For example, the virtual assistant 210 can gather data from the user'saccount maintained by a content management system 105, from a datastorage 250 on the client device 105 _(i), etc.

In some embodiments, the virtual assistant 210 can prompt the user toprovide their user credentials prior to accessing the user's account togather data. For example, the virtual assistant 210 can request that theuser enter a user name and password, provide fingerprint verification,etc.

In some embodiments, the virtual assistant 210 can query the user forspecified data. For example, the virtual assistant 210 can present theuser with messages as part of the communication session that prompt theuser to provide the specified data. Alternatively, the virtual assistant210 can present the user with one or more options to select from, forexample, as a poll within the communication session. The user can selectfrom the provided options to provide the virtual assistant 210 with thespecified data.

At block 335, the virtual assistant 210 can provide the gathered data tothe 3^(rd) party service. For example, the virtual assistant 210 can usethe appropriate command from the set of communication instructions toinitiate contact with a 3^(rd) party server 120 _(i) associated with the3^(rd) party service and provide the gathered data to the 3^(rd) partyservice.

At block 340, the virtual assistant 210 can assist the user communicatewith the 3^(rd) party service. This can include using the appropriatecommands to communicate with the 3^(rd) party server 120 _(i) to assistthe user perform the requested service. For example, the virtualassistant 210 can transmit data to the 3^(rd) party server 120 _(i),receive data from the 3^(rd) party server 120 _(i), present data to theuser as part of the communication session, gather data needed by the3^(rd) party service, connect the user to a representative of the 3^(rd)party service, etc.

Further, in some embodiments, the virtual assistant 210 can add otherusers to the communication session and facilitate communication betweeneach user and the 3^(rd) party service. For example, a user may wish tochange their flight to correspond to a friend flight. The virtualassistant 210 can add the friend to the communication session so thatthe user and the friend can both communicate with a representative andeach other to schedule the appropriate flight.

FIGS. 4A-4J show an example of a virtual assistant assisting aparticipant of a communication session to communicate with a 3^(rd)party service. FIGS. 4A-4J will be discussed in view of the systemsshown in FIG. 1 and FIG. 2. FIG. 4A shows a client device 115 _(i) usedto conduct a communication session 405. The communication session 405can be facilitated by communication application 205.

The communication session 405 can include a recipient list 410identifying the other participants of the communication session 405. Asshown, the only other participant of the communication session 405 isvirtual assistant 210. Accordingly, messages provided by the user of theclient device 115 _(i) as part of the communication session 405 willonly be presented on the client device 115 _(i) and will not betransmitted to another client device 115. As shown, the user has entereda message directed to the virtual assistant 210 and requesting that thevirtual assistant 210 assist the user communicate with an airline.

The virtual assistant 210 can analyze the message to identify thespecified 3^(rd) party service. Virtual assistant 210 can thencommunicate with the content management system 105 to transmit aninstruction request for the set of communication instructions associatedwith the 3^(rd) party service. The set of communication instructions caninclude a listing of services provided by the 3^(rd) party service,listing of data needed by the 3^(rd) party service to facilitatecommunication and commands for communicating with the 3^(rd) partyservice.

FIG. 4B shows the next step in communication session 405. As shown,virtual assistant 210 has presented the user with a reply message aspart of communication session 405 and presented the user with a pollregarding what specified service the user would like help with. Virtualassistant 210 can gather the listing of for the 3^(rd) part service fromthe set of communication instructions. The user can then select thespecified service with which the user would like help.

FIG. 4C shows that the user has selected to upgrade seats. Based on theuser selection and the set of communication instructions, virtualassistant 210 can determine data required by the 3^(rd) party to performthe specified service. For example, the 3^(rd) party service may requirethe user's name, flight number, confirmation number, etc. to assist withupgrading the user's seats. Virtual assistant 210 can gather this dataand provide it to the 3^(rd) party service. For example, virtualassistant 210 can gather data from data storage 250 and/or from theuser's profile on content management system 105.

FIG. 4D shows that the virtual assistant 210 has entered a message intothe communication session 405 that requests the user to provide usercredentials for the user's account. This verification can be requiredprior to virtual assistant 210 being granted to access the user's dataand provide it to a 3^(rd) party service.

FIG. 4E shows the user being prompted to enter their user credentials.As shown, the user can select to either enter a password or providetheir fingerprint.

FIG. 4F shows that the virtual assistant 210 has presented the user witha message as part of the communication session 405 indicating that thevirtual assistant 210 is initiating communication with the 3^(rd) partyservice. This can include the virtual assistant 210 using a command fromthe set of communication instructions to communicate with an appropriate3^(rd) party server 120, to initiate communication for the selectedservice, as well as provide any necessary data to facilitate thecommunication.

FIG. 4G shows that the virtual assistant 210 has presented the user witha message as part of the communication session 405 that notifies theuser of an estimated wait time to be connected to a representative. The3^(rd) party server 120, associated with the 3^(rd) party service canprovide the virtual assistant 210 with the estimated wait time, whichcan then be presented to the user. Further, the virtual assistant 210can prompt the user regarding whether the user would like to wait tospeak with the representative.

In some embodiments, the virtual assistant 210 can notify a user that arepresentative is not currently available. For example, some 3^(rd)party services may only offer live representatives during specifiedhours. The virtual assistant 210 can notify the user that therepresentative is not available as well as when the user can connect toa live representative.

FIG. 4H shows that the user has entered a message into the communicationsession 405 indicating that the user is alright waiting for theestimated wait time to speak to the representative. Alternatively, ifthe user had indicated that the user would not like to wait, the virtualassistant 210 could terminate the attempted connection with therepresentative.

FIG. 41 shows that the user has been connected with a representative ofthe 3^(rd) party service and that the representative has presented theuser with a message as part of the communication session 405 requestingspecific information regarding the service specified by the user. Therepresentative already has the users information, such as name, flight,requested service, etc., that was provided by the virtual assistant. Asa result, the representative is ready to discuss the specifics of theservice with the user when they are connected.

FIG. 4J shows that the representative has completed the user's requestto upgrade seats. Further, the user is presented with a confirmationwithin the communication session 405.

FIGS. 5A-5J show another example of a virtual assistant assisting aparticipant of a communication session to communicate with a 3^(rd)party service. FIGS. 5A-5J will be discussed in view of the systemsshown in FIG. 1 and FIG. 2. FIG. 5A shows a client device 115 _(i) usedto conduct a communication session 505. The communication session 505can be facilitated by communication application 205.

The communication session 505 can include a recipient list 410identifying the other participants of the communication session 505. Asshown, the only other participant of the communication session 505 isvirtual assistant 210. Accordingly, messages provided by the user of theclient device 115 _(i) as part of the communication session 505 willonly be presented on the client device 115 _(i) and will not betransmitted to another client device 115. As shown, the user has entereda message directed to the virtual assistant 210 and requesting that thevirtual assistant 210 assist the user communicate with a specifiedtelephone provider.

FIG. 5B shows that the virtual assistant 210 presented a follow upmessage responding to the users request and prompting the user topresent authentication information. FIG. 5C shows that the user isprompted to either enter their password or, alternatively, authorizeusing their fingerprint.

FIG. 5D shows that the virtual assistant 210 has presented the user witha poll to select from the services provided by the 3^(rd) party service.The virtual assistant 210 can identify the services from the set ofcommunication instructions for the 3^(rd) party service.

FIG. 5E shows that the virtual assistant 210 has presented the user withthe user's current billing statement. The virtual assistant can use theset of communication instructions to gather the required data andcommands to request the user's current billing statement, which can bepresented as part of the communication session 505. Further, the usercan select to pay the current bill through the communication session505.

FIG. 5F shows that the user has been presented with confirmation thatthe user's payment has been received by the 3^(rd) party service.

FIG. 5G shows that the virtual assistant 210 has prompted the userregarding whether the user needs further assistance. As shown, the userhas responded that the user would like assistance scheduling an in-storeappointment.

FIG. 5H shows that the virtual assistant 201 has responded to the userindicating that the virtual assistant will assist the user connect to arepresentative of the 3^(rd) party service.

FIG. 5I shows that the user has been connected with a representative ofthe 3^(rd) party service and that the virtual assistant 210 is assistingthe parties schedule a time to meet. As shown, the virtual assistant 210has presented the user with a poll that lists multiple candidate timesfor the meeting. The virtual assistant 210 can gather data from acalendar of the user and the 3^(rd) party service to identify the set ofcandidate times during which both parties are free. A user can selectone of the presented time to schedule the meeting.

FIG. 5J shows that after the user has selected a time for the meeting,the representative of the 3^(rd) party service has presented the userwith a message confirming the meeting.

FIG. 6A, and FIG. 6B illustrate exemplary possible system embodiments.The more appropriate embodiment will be apparent to those of ordinaryskill in the art when practicing the present technology. Persons ofordinary skill in the art will also readily appreciate that other systemembodiments are possible.

FIG. 6A illustrates a conventional system bus computing systemarchitecture 600 wherein the components of the system are in electricalcommunication with each other using a bus 605. Exemplary system 600includes a processing unit (CPU or processor) 610 and a system bus 605that couples various system components including the system memory 615,such as read only memory (ROM) 520 and random access memory (RAM) 625,to the processor 610. The system 600 can include a cache of high-speedmemory connected directly with, in close proximity to, or integrated aspart of the processor 610. The system 600 can copy data from the memory615 and/or the storage device 630 to the cache 612 for quick access bythe processor 610. In this way, the cache can provide a performanceboost that avoids processor 610 delays while waiting for data. These andother modules can control or be configured to control the processor 610to perform various actions. Other system memory 615 may be available foruse as well. The memory 615 can include multiple different types ofmemory with different performance characteristics. The processor 610 caninclude any general purpose processor and a hardware module or softwaremodule, such as module 1 632, module 2 634, and module 3 636 stored instorage device 630, configured to control the processor 610 as well as aspecial-purpose processor where software instructions are incorporatedinto the actual processor design. The processor 610 may essentially be acompletely self-contained computing system, containing multiple cores orprocessors, a bus, memory controller, cache, etc. A multi-core processormay be symmetric or asymmetric.

To enable user interaction with the computing device 600, an inputdevice 645 can represent any number of input mechanisms, such as amicrophone for speech, a touch-sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech and so forth. An outputdevice 635 can also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems can enable a user to provide multiple types of input tocommunicate with the computing device 600. The communications interface640 can generally govern and manage the user input and system output.There is no restriction on operating on any particular hardwarearrangement and therefore the basic features here may easily besubstituted for improved hardware or firmware arrangements as they aredeveloped.

Storage device 630 is a non-volatile memory and can be a hard disk orother types of computer readable media which can store data that areaccessible by a computer, such as magnetic cassettes, flash memorycards, solid state memory devices, digital versatile disks, cartridges,random access memories (RAMs) 625, read only memory (ROM) 620, andhybrids thereof.

The storage device 630 can include software modules 632, 634, 636 forcontrolling the processor 610. Other hardware or software modules arecontemplated. The storage device 630 can be connected to the system bus605. In one aspect, a hardware module that performs a particularfunction can include the software component stored in acomputer-readable medium in connection with the necessary hardwarecomponents, such as the processor 610, bus 605, display 635, and soforth, to carry out the function.

FIG. 6B illustrates a computer system 650 having a chipset architecturethat can be used in executing the described method and generating anddisplaying a graphical user interface (GUI). Computer system 650 is anexample of computer hardware, software, and firmware that can be used toimplement the disclosed technology. System 650 can include a processor655, representative of any number of physically and/or logicallydistinct resources capable of executing software, firmware, and hardwareconfigured to perform identified computations. Processor 655 cancommunicate with a chipset 660 that can control input to and output fromprocessor 655. In this example, chipset 660 outputs information tooutput 665, such as a display, and can read and write information tostorage device 670, which can include magnetic media, and solid statemedia, for example. Chipset 660 can also read data from and write datato RAM 675. A bridge 680 for interfacing with a variety of userinterface components 685 can be provided for interfacing with chipset660. Such user interface components 685 can include a keyboard, amicrophone, touch detection and processing circuitry, a pointing device,such as a mouse, and so on. In general, inputs to system 650 can comefrom any of a variety of sources, machine generated and/or humangenerated.

Chipset 660 can also interface with one or more communication interfaces590 that can have different physical interfaces. Such communicationinterfaces can include interfaces for wired and wireless local areanetworks, for broadband wireless networks, as well as personal areanetworks. Some applications of the methods for generating, displaying,and using the GUI disclosed herein can include receiving ordereddatasets over the physical interface or be generated by the machineitself by processor 655 analyzing data stored in storage 670 or 675.Further, the machine can receive inputs from a user via user interfacecomponents 685 and execute appropriate functions, such as browsingfunctions by interpreting these inputs using processor 655.

It can be appreciated that exemplary systems 600 and 650 can have morethan one processor 610 or be part of a group or cluster of computingdevices networked together to provide greater processing capability.

For clarity of explanation, in some instances the present technology maybe presented as including individual functional blocks includingfunctional blocks comprising devices, device components, steps orroutines in a method embodied in software, or combinations of hardwareand software.

In some embodiments the computer-readable storage devices, mediums, andmemories can include a cable or wireless signal containing a bit streamand the like. However, when mentioned, non-transitory computer-readablestorage media expressly exclude media such as energy, carrier signals,electromagnetic waves, and signals per se.

Methods according to the above-described examples can be implementedusing computer-executable instructions that are stored or otherwiseavailable from computer readable media. Such instructions can comprise,for example, instructions and data which cause or otherwise configure ageneral purpose computer, special purpose computer, or special purposeprocessing device to perform a certain function or group of functions.Portions of computer resources used can be accessible over a network.The computer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, firmware, orsource code. Examples of computer-readable media that may be used tostore instructions, information used, and/or information created duringmethods according to described examples include magnetic or opticaldisks, flash memory, USB devices provided with non-volatile memory,networked storage devices, and so on.

Devices implementing methods according to these disclosures can comprisehardware, firmware and/or software, and can take any of a variety ofform factors. Typical examples of such form factors include laptops,smart phones, small form factor personal computers, personal digitalassistants, and so on. Functionality described herein also can beembodied in peripherals or add-in cards. Such functionality can also beimplemented on a circuit board among different chips or differentprocesses executing in a single device, by way of further example.

The instructions, media for conveying such instructions, computingresources for executing them, and other structures for supporting suchcomputing resources are means for providing the functions described inthese disclosures.

Although a variety of examples and other information was used to explainaspects within the scope of the appended claims, no limitation of theclaims should be implied based on particular features or arrangements insuch examples, as one of ordinary skill would be able to use theseexamples to derive a wide variety of implementations. Further andalthough some subject matter may have been described in languagespecific to examples of structural features and/or method steps, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to these described features or acts. Forexample, such functionality can be distributed differently or performedin components other than those identified herein. Rather, the describedfeatures and steps are disclosed as examples of components of systemsand methods within the scope of the appended claims.

1. A method comprising: receiving, by a client device, a first messageentered as part of a communication session; performing, by the clientdevice, a semantic analysis of the first message to determine that thefirst message includes a request for a virtual assistant to facilitatecommunication with a third party; retrieving, by the client device, aset of communication instructions associated with the third party,wherein the set of communication instructions identifies a set of dataneeded by the third party to provide a third party service, and a set ofcommands for communicating with the third party; gathering, by theclient device, the set of data from one or more memory locationsaccessible by the client device based on the set of communicationinstructions; transmitting, by the client device, the set of data to thethird party service using at least a first command of the set ofcommands; receiving a response message from the third party regardingthe third party service; and presenting, in the communication session,information corresponding to the response message received from thethird party regarding the third party service.